package cn.iocoder.yudao.module.system.service.chaoshun;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.chaoshun.vo.sp.*;
import cn.iocoder.yudao.module.system.dal.dataobject.chaoshun.ChaoshunSpDO;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.validation.Valid;
import java.util.List;

/**
* @author 16651
* @description 针对表【chaoshun_sp】的数据库操作Service
* @createDate 2024-04-14 22:51:35
*/
public interface ChaoshunSpService extends IService<ChaoshunSpDO> {

    /**
     * 获得商品分页列表
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<ChaoshunSpDO> getSpPage(SpPageReqVO reqVO);

    /**
     * 获得用户信息
     *
     * @param yhxmVO 用户信息
     * @return 用户信息
     */
    public List<ChaoshunSpDO> getYhxxByXm(YhxmVO yhxmVO);

    /**
     * 打印商品分页列表
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<ChaoshunSpDO> dySpPage(SpPageReqVO reqVO);

    /**
     * 修改短信发送状态
     *
     * @param id     用户编号
     * @param status 状态
     */
    void updateChaoshunSpStatus(Long id, Integer status);

    /**
     * 修改是否上门状态
     *
     * @param id     用户编号
     * @param sfsm 状态
     */
    void updateChaoshunSpSfsm(Long id, Integer sfsm);

    /**
     * 删除物流信息
     *
     * @param id 物流编码
     */
    void deleteSp(Long id);

    /**
     * 延迟发货
     *
     * @param id 物流编码
     */
    void delaySp(Long id);

    /**
     * 返货
     *
     * @param id 物流编码
     */
    void returnSp(Long id);

    /**
     * 创建商品信息
     *
     * @param createReqVO 商品信息
     * @return 商品编号
     */
    String createChaoshunSp(@Valid ChaoshunSpSaveReqVO createReqVO);

    /**
     * 修改商品
     *
     * @param updateReqVO 商品信息
     */
    void updateChaoshunSp(@Valid ChaoshunSpSaveReqVO updateReqVO);

    /**
     * 通过商品 ID 查询商品
     *
     * @param id 商品ID
     * @return 商品对象信息
     */
    ChaoshunSpDO getChaoshunSp(Long id);

    /**
     * 通过 物流ID 发送短信
     *
     * @param idList 物流ID
     */
    void fsdx(List<Long> idList);

    /**
     * 批量导入用户
     *
     * @param importSps     导入用户列表
     * @param isUpdateSupport 是否支持更新
     * @return 导入结果
     */
    SpImportRespVO importSpList(List<SpImportExcelVO> importSps, boolean isUpdateSupport);
}
